1. Field of the Invention
The present invention relates generally to a method and apparatus for capturing high-bandwidth commands and addresses. More particularly, the present invention relates to an address FIFO (first-in first-out) procedure and apparatus for use with a data storage system such as dynamic random access memory (“DRAM”). A FIFO circuit buffers incoming memory address commands until corresponding data arrives to smooth data transfer to memory. The invention also relates to a FIFO buffer system that maintains the write pointer at least one buffer ahead of the read pointer to enable loading of buffers while others are being unloaded.
2. State of the Art
Faster and smaller circuits are the focus of much advancement in semiconductor technology. To address the need for faster and smaller circuits, a group of integrated circuits can be on a common bus. In this configuration, each integrated circuit operates in a coordinated manner with the other integrated circuits on the bus to share data which is transmitted at a high speed. An example of such a high-speed data system is described in U.S. Pat. No. 5,917,760 to Millar (Jun. 29, 1999), the disclosure of which is incorporated herein by reference. Millar describes a high-speed data system using a common bus and a memory subsystem commonly known as SyncLink dynamic random access memory (“SLDRAM”). By providing an appropriate number of memory devices and an efficient control system as used in SLDRAM, very high-speed data transmissions can be achieved. However, faster systems, such as SLDRAM, are now reaching transfer speeds where the memory circuits cannot process the data as fast as the common bus can supply it. More specifically, as data storage address commands arrive at a memory system, if the corresponding data has not arrived yet, the address commands must be stored in a data pipeline until the data arrives. This address command backlog prevents use of the data pipeline by other processes, including transmitting other data, until the data corresponding to the address command arrives. This inconsistency in address command and data arrival times can result in increased data errors and lost data, but most often slows the system by creating a “bottleneck” of address commands.
A pipeline may be divided into any number of stages during which portions of commands are processed and executed. However, in a case of a memory device, such as SLDRAM, the series of processes typically includes: 1) an input process of address data; 2) a decoding process of the address data; 3) a reading process of data from a cell; 4) a transfer process of the data to an output circuit; and 5) an output process of the data. An example of a pipeline system used with DRAM is provided in U.S. Pat. No. 5,978,884 to Yamaguchi et al. (Nov. 2, 1999), the disclosure of which is incorporated herein by reference.
One solution which has been used in memory pipeline systems to correct for the bottleneck problem is to repeat much of the logic circuits within each logic pipeline to accommodate multiple simultaneous commands. However, adding more redundant logic circuits to a system is counter to the desire to make the overall system smaller.
Many telecommunication devices include first-in first-out (FIFO) circuits which temporarily buffer data arriving at a bandwidth higher than the bandwidth of the receiving system. A FIFO circuit stores incoming data, in the order it arrives, in temporary buffers which are then sequentially read out and used by the telecommunication subsystem for which they were intended. The FIFO circuit can store the mass of data that arrives before it can be processed in a temporary storage and read it at a manageable speed. For example, a high-bandwidth data signal can be received at any speed by a telecommunication device, stored in the FIFO buffer, and read out at the processing speed of the device.
One example of a FIFO circuit used in a telecommunication system includes U.S. Pat. No. 4,507,760 to Fraser (Mar. 26, 1985). Fraser discloses random access memory (RAM) organized to act as FIFO memory and a control circuit to implement queue management for incoming/outgoing data in a digital communication system. A read pointer addresses the execution in the RAM from where a word may be read. A write pointer addresses the location in the RAM where a word may be entered. A “last” pointer addresses the location in the RAM where the last word of a complete message is stored.
Another example of a FIFO circuit used in a data communications system is described in U.S. Pat. No. 5,519,701 to Colmant et al. (May 21, 1996). Colmant et al. disclose a system to manage storage of data in FIFO circuits as data is transferred, in either direction, between the host bus and the network. By a queue manager allocating the queues, which have the most activity, the queue manager can improve the speed of the transferring data while reducing the amount of bandwidth that would otherwise be required.
It is desirable to have a memory system that can handle the increased speed demands made by faster circuits, preserve data which arrives faster than the memory circuits can handle it, and do so without the redundancy of circuits required by existing memory systems.